#include "comm.hpp"

int main()
{
    // 获取key
    int key = ftok(pathname, proj_id);
    if (key < 0)
    {
        cout << "errno: " << errno << " error: " << strerror(errno) << endl;
        return 1;
    }
    sleep(2);

    // 获取shmid
    int shmid = shmget(key, size, IPC_CREAT);
    if (shmid < 0)
    {
        cout << "errno: " << errno << " error: " << strerror(errno) << endl;
        return 1;
    }
    cout << "获取shmid，shmid:" << shmid << endl;
    sleep(2);

    // 共享内存挂接
    char *s = (char *)shmat(shmid, nullptr, 0);
    if (s < 0)
    {
        cout << "errno: " << errno << " error: " << strerror(errno) << endl;
        return 1;
    }
    cout << "共享内存挂接" << endl;
    sleep(2);

    int fd = open("fifo", O_RDONLY);
    if (fd < 0)
    {
        cout << "errno: " << errno << " error: " << strerror(errno) << endl;
        return 1;
    }
    int msg = 0;

    // 这里开始进行信息的接收
    while(true)
    {
        ssize_t n = read(fd, &msg, sizeof(msg));
        if(n == 0)
        {
            break;
        }
        cout << "接收：" << s << endl;
        sleep(1);
    }

    // 共享内存解链接
    int dt = shmdt(s);
    if (dt < 0)
    {
        cout << "errno: " << errno << " error: " << strerror(errno) << endl;
        return 1;
    }
    cout << "共享内存解链接" << endl;
    sleep(2);

    return 0;
}